home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / COMMUNIC / H399.ZIP / ODY200SH.LZH / ODY200SH.DOC < prev    next >
Text File  |  1993-10-27  |  76KB  |  1,593 lines

  1.  
  2.  
  3.  
  4.                      ODYSSEY SHAREWARE VERSION
  5.  
  6.                            Release 2.00
  7.  
  8.                           27th Oct,  1993
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17. The Odyssey program and this document are:
  18. Copyright (C) 1991, Don Milne and Micropack Ltd.
  19. See README.TXT file for registration details.
  20.  
  21.  
  22.  
  23. LIMITED LICENSE.
  24.  
  25. Notice that Odyssey Shareware Version, is Copyright (C) Don Milne and
  26. Micropack Ltd. You do NOT own the software, you have a limited right to
  27. use and evaluate the software for a period of 30 days. Use of Odyssey for
  28. longer than 30 days requires that you register your copy.
  29.  
  30. You MAY NOT:
  31.  
  32.    o Make changes to the software or documentation provided.
  33.    o Attempt to disassemble, or otherwise reverse engineer the software.
  34.    o Sell, Rent, Lease etc this software to others.
  35.    o Bundle it with other products which you sell.
  36.  
  37. You MAY:
  38.  
  39.    o Evaluate the software for 30 days.
  40.    o Make backup or other copies of the software as required in order
  41.      to fully evaluate it.
  42.    o Give (not sell!) copies to friends, or upload to bulletin boards.
  43.  
  44.  
  45. STATEMENT OF WARRANTY
  46.  
  47. This software is provided to you as is. Neither Shareware Publishing nor
  48. the authors make any warranty that ODYSSEY SHAREWARE VERSION is suitable
  49. for your application. Under no circumstances will Shareware Publishing or
  50. the authors be held responsible for any loss or damage suffered by any user
  51. arising out of the supply, use or operation of this software, whether or
  52. not such such loss or damage be direct, consequential or otherwise.
  53.  
  54. This software is protected by United Kingdom Copyright Law and by
  55. international treaty provision. You may use the software only under the
  56. terms described in the license statement.
  57.  
  58.  
  59.  
  60. NOTE: FOR SPACE REASONS, THIS MANUAL IS DRASTICALLY ABBREVIATED, COMPARED
  61. TO THE PRINTED VERSION. ON REGISTRATION YOU WILL OF COURSE RECEIVE A FULL,
  62. PROFESSIONALLY TYPESET AND BOUND, 400+ PAGE MANUAL.
  63.  
  64. =============================================================================
  65. =============================================================================
  66.  
  67. INTRODUCTION TO ODYSSEY (SHAREWARE VERSION)
  68. -------------------------------------------
  69.  
  70. Odyssey is supplied as two files (or as one ZIP containing these two files)
  71. :-
  72.  
  73.             ODYxxxx.LZH
  74.             INSTALL.EXE
  75.  
  76. The first file is a compressed archive containing all the Odyssey programs,
  77. data files and example scripts (the xxxx marks where a version number will
  78. appear). The second file is the Odyssey installation program.
  79.  
  80. You will use INSTALL to unpack all the Odyssey files into an Odyssey
  81. directory on your hard disk or second floppy. However, whatever target you
  82. unpack Odyssey files onto, it must have at around 700K bytes available disk
  83. space, which means that you cannot unpack the Odyssey files onto a 360K
  84. disk. You can unpack the files onto a 3.5 inch floppy, or a high density
  85. (AT format) 5.25 inch floppy, both of which have adequate capacities. If
  86. you have problems installing Odyssey then you should contact Shareware
  87. Publishing for support. A hard disk is strongly recommended for practical
  88. use of Odyssey.
  89.  
  90. To install Odyssey you should follow these instructions:-
  91.  
  92.     1. Insert the Odyssey master disk in your floppy drive, either
  93.        drive A or drive B, then close the drive door.
  94.  
  95.        If you downloaded the software from a BBS and have it on your
  96.        hard disk then ignore this instruction, however if the files
  97.        came in archived form (.ZIP etc), then you do need to unpack
  98.        the archive using the correct unpacking tool.
  99.  
  100.     2. If the files are on a floppy then log to that drive by typing the
  101.        drive letter, a colon, and then press the <enter> key. For example,
  102.        if you put the Odyssey disk in drive A, then you should type:-
  103.  
  104.             A: <enter>
  105.  
  106.        If you have done this correctly then the DOS prompt should change to
  107.        "A>" (or possibly "A:\>" on some systems).
  108.  
  109.        If you have the install files on your hard disk then change to the
  110.        directory containing those files, e.g.:-
  111.  
  112.             cd \comms\download
  113.  
  114.  
  115.     3. Run the Install program, by typing "INSTALL" (without the quotes),
  116.        then press the <enter> key.
  117.  
  118.     4. When INSTALL runs, it asks you which directory it should use ie.,
  119.        where it should install the Odyssey files. If yours is a typical
  120.        system then the default of "C:\ODYSSEY" offered is probably
  121.        acceptable. You can however enter any directory name you wish,
  122.        provided that you enter it in the above format, remembering to
  123.        include both drive letter and directory path. If you wish to install
  124.        the files in the root directory of a disk (e.g. on drive B) then you
  125.        should enter "B:\". The target directory need not be the directory
  126.        containing the install files.
  127.  
  128.    5. INSTALL will then proceed to unpack all of the Odyssey files, copying
  129.       them into the directory you named. If the named directory did not
  130.       already exist then INSTALL creates it. INSTALL will keep you informed
  131.       of its progress as it unpacks the files.
  132.  
  133.    6. Finally, all the Odyssey files will be unpacked, and INSTALL will
  134.       proceed to ask you some basic questions about your hardware, which
  135.       you should answer. When this is done INSTALL will create an Odyssey
  136.       configuration file for you, and you are then ready to go. The
  137.       questions you are asked are discussed in the following section.
  138.  
  139. Now that Odyssey has been installed, you should store your Odyssey disk in
  140. a safe place. This will be a backup in case your files are accidentally
  141. deleted.
  142.  
  143. When Odyssey is properly installed you should examine the directory and
  144. find a file called READ.ME. This file will contain any information on
  145. changes to the software since the manual was printed.
  146.  
  147.  
  148. INSTALL QUESTIONS AND ANSWERS.
  149.  
  150. Before answering any of the INSTALL questions, you should first make sure
  151. that your modem is attached to your PC, and is powered up. If you have an
  152. internal card modem then your modem is already connected and powered. Doing
  153. this allows INSTALL to check for itself which port your modem is connected
  154. to. However, this check may not work properly if you have an improper cable
  155. with an external modem (see below). If you do not intend to use Odyssey
  156. with a modem then you can ignore this instruction.
  157.  
  158.     Possible modem detected on COM2
  159.     Use which Comm Port? (1,2): 2
  160.  
  161. This is the first question asked by INSTALL. You will be shown a list of
  162. numbers in brackets, each number indicating the presence of a comm port. If
  163. INSTALL thinks it has detected a modem on one of these ports then it will
  164. offer that port number as the default choice. You can press <enter> to
  165. accept the default, or you should type one of the valid comm port numbers
  166. shown - no other number will be accepted. In the example prompt shown
  167. above, two comm ports have been recognised, and a possible modem has been
  168. detected on COM2. Odyssey itself can be configured to use comm ports which
  169. have non-standard locations in memory, so you can always change the
  170. selected port once you get through the basic installation procedure.
  171.  
  172. If you have a modem attached and powered, but INSTALL does not display a
  173. default port number, then it is likely that DSR is not being held high,
  174. either because the cable is incorrect, or because the modem is configured
  175. wrongly (in the case of the DSR signal, this is not fatal, but may indicate
  176. other configuration problems with your modem), or it may also mean that
  177. your comm port is non-standard in some way, possibly by being at a non
  178. standard address in memory.
  179.  
  180.     Select your modem :
  181.  
  182. Odyssey displays this prompt immediately before displaying a menu of modem
  183. which Odyssey has preset configurations for. You can scan up and down the
  184. list of modems with the arrow keys, and if you see your modem you simply
  185. highlight it and press the <Enter> key. If your modem is not in the list
  186. then the best choice is "Hayes Generic".
  187.  
  188. | NOTE: Odyssey keeps modem configuration details in an editable ASCII text
  189. | file called ODYSSEY.MDM - the pick list mentioned above is extracted from
  190. | this file. If your modem was not present, and you are not a comms novice,
  191. | then you might like to examine this file, and perhaps even create a new
  192. | entry suitable for your own modem. If so, we would be grateful if you let
  193. | us have the details, so that other users may benefit from your effort.
  194. | Run the supplied MODEMCFG program to select a new modem outside the
  195. | INSTALL program, or use the "eXchange modem" option in Odyssey's
  196. | Setup/Modem menu.
  197.  
  198.     Use Tone or Pulse dialing? [T/P] :
  199.  
  200. Enter T or P in answer to this question, depending on whether your exchange
  201. allows tone dialing or not. If you do not know then P (for Pulse dialing)
  202. usually works on public exchanges, even when they also support tones. If
  203. your phone is a push button type, and you can hear tones as you dial, and
  204. you get connections very quickly, then you almost certainly have tone
  205. dialing. If you get no tones as you dial, and the phone whirs and clicks
  206. for several seconds after you finish, then you probably still have pulse
  207. dialing. In the latter case, you should perhaps consider asking your local
  208. telephone company whether tone dialing is available, since the much faster
  209. dial and connect sequence is more pleasant to use.
  210.  
  211.     Should Odyssey use color? [Y/N] :
  212.  
  213. You will not see this question if you have a mono display adapter in your
  214. PC. Odyssey can detect for itself whether your display adapter is mono or
  215. color, however it cannot tell if you actually have a color monitor. Your
  216. answer to this question will settle the issue. Enter Y if you can use
  217. color, or N if not.
  218.  
  219. Now that these questions have been answered, Odyssey installation is
  220. complete, and you may now run the program by typing "ODY" at the DOS prompt.
  221.  
  222.  
  223. RUNNING ODYSSEY FOR THE FIRST TIME.
  224. -----------------------------------
  225.  
  226. THE OPENING DISPLAY
  227.  
  228. You run Odyssey by typing "ODY" at the DOS prompt. You could also supply a
  229. script name on the command line, and Odyssey would execute that script once
  230. it starts up, however when running Odyssey for the first time you are
  231. unlikely to have a script you wish to run.
  232.  
  233. When Odyssey runs, it briefly displays a logo on the screen while it
  234. initialises the serial port, after which the screen clears and you are
  235. ready to go! In the shareware version there is an additional screen
  236. describing the license terms and telling you how to register. You must
  237. press a key in order to clear this screen. When you have done so the logo
  238. will disappear, leaving you looking at the main terminal screen, which is
  239. mostly blank, except for the top and bottom lines of the display.
  240.  
  241. The top line of the display is the menu line, showing the main menu
  242. options. This menu can be disabled in the setup section if you wish, and
  243. this is sometimes necessary when the remote host with which you communicate
  244. expects a 24 line terminal. To begin with however you will probably want to
  245. keep this line present as an aide-memoire.
  246.  
  247. Also present on the menu line is a clock showing the time of day. This
  248. clock uses DOS to get the time, so if DOS shows an incorrect time then so
  249. will Odyssey.
  250.  
  251. The bottom line of the display is the status line, and this shows some
  252. basic information about the current state of software and hardware, as
  253. described in the following paragraphs.
  254.  
  255. The leftmost field shows the Odyssey version number, but when a script is
  256. running, the script name is shown here instead.
  257.  
  258. To the right of the version number is a field which should currently be
  259. blank, but which will contain the symbol "DCD" when you establish a
  260. connection to a remote machine (DCD = Data Carrier Detected). If your
  261. status line already shows DCD, and you are not currently connected to a
  262. remote host, then either your cable or modem configuration is incorrect.
  263. Some modems come configured by default with their DCD signal held
  264. permanently high, which supposedly makes life easier for poor comms
  265. software, but in reality causes as many problems as it solves, especially
  266. for Odyssey, which needs the DCD signal to tell it when to start software
  267. MNP, when a call has arrived during host mode, and several other things.
  268. You should correct this problem as soon as possible if you have it.
  269.  
  270. If you do have the DCD problem, then you are also likely to have a related
  271. problem, which is that many such modems also come configured to ignore the
  272. DTR signal from the PC (DTR = Data Terminal Ready). The RS232 standard
  273. requires that if the terminal or PC drops DTR for half a second, then the
  274. modem should treat this is an instruction to hang up the line. If your
  275. modem is configured to ignore DTR then you will not be able to hang up the
  276. line from the PC keyboard (using ALT-H).
  277.  
  278. Both of the above problems are solved by changing your modem configuration,
  279. either through switch settings, or using a modem command. You should
  280. consult your modem manual for these commands. The exact wording will
  281. naturally depend on the modem, but for the DCD problem you should look for
  282. a command which instructs the modem that "DCD follows true state of
  283. carrier", and for the DTR problem you should look for the command which
  284. tells the modem that it should "interpret DTR according to CCITT/RS232/EIA
  285. standards".
  286.  
  287. To the right of the DCD field is another field which should currently be
  288. blank, but if you suffer the DCD fault then it may temporarily contain
  289. "MNP5", because this is the field used to inform you when Odyssey is
  290. maintaining an error corrected link (MNP = Microcom Network Protocol). The
  291. digit at the end of this field tells you which class of MNP has been
  292. established, and will always be either 2, 4 or 5 in the current version of
  293. Odyssey.
  294.  
  295. To the right of the MNP field is the baud rate field, and displays the
  296. current terminal speed and parity setting. For example "2400N" means 2400
  297. bits per second, no parity. "1200E" would mean 1200 bits per second, even
  298. parity.
  299.  
  300. To the right of the baud rate field is the "Log" field. Odyssey has the
  301. ability to capture (log) any text which it receives to a text file, stored
  302. on disk. When you run Odyssey for the first time this field will contain
  303. "Log: No File", meaning that no log file is currently active. When you open
  304. a log file (ALT-L) then the name you gave to the log file will be shown
  305. here.
  306.  
  307. The next field shows the terminal emulation currently selected. Odyssey
  308. defaults to a terminal type "TTY", which basically means a dumb ASCII
  309. terminal. Other possible emulations include ANSI or VT100, but whichever
  310. terminal is currently selected, its name is shown here. Terminal emulations
  311. can be selected from the keyboard (via a menu), or by a script, or can be
  312. attached to a dialing directory entry.
  313.  
  314. To the right of the terminal emulation field is the line quality field,
  315. active only when you are on-line, and then only when software MNP is being
  316. used. Since you are off-line at the moment this field should be blank. When
  317. it is active the field will contain the symbol "LQ:xxx" where xxx is a
  318. number which expresses the line quality as a percentage. By "line quality"
  319. we mean how "noisy" the line is. In other comms packages noisy lines
  320. manifest themselves as spurious characters on the terminal screen, however
  321. this does not happen in Odyssey when MNP is being used, so the line quality
  322. percentage is a valuable guide to the actual conditions. A line quality of
  323. 100% means a perfectly clean line, while a low percentage means a poor
  324. connection, which may show itself as poor throughput and a jerky display.
  325. If your line quality drops much below 90% then you would probably be best
  326. advised to drop the connection and redial, hoping for better luck next time.
  327.  
  328. The last field on the line is an on-line clock (blank when you first run
  329. Odyssey). When you make a connection to a remote machine this clock will
  330. reset itself to zero, and thereafter will show elapsed hours, minutes and
  331. seconds since the connection was established.
  332.  
  333.  
  334. ONLINE HELP
  335.  
  336. If you press the F1 key now, you will be presented with a window containing
  337. help information about the keys you can press from the terminal screen.
  338. Generally speaking, you can press F1 anywhere within Odyssey, and you will
  339. be presented with help information which is specific to the Odyssey section
  340. which you happen to be using at that moment - this feature is often called
  341. "Context Sensitive Help". These help windows are available in addition to
  342. single line help, which appears on the bottom line of the display when you
  343. invoke most Odyssey features. Single line help normally contains only the
  344. briefest of guides to the keys which can be pressed at that point in the
  345. program. For an explanation of those key presses you would consult the F1
  346. help.
  347.  
  348. When you press F1 and a help window pops up, you then have the option of
  349. pressing the F1 key again, which will display an index of help topics. This
  350. index allows you to navigate your way through the help system, which is a
  351. useful way of exploring many Odyssey features, as an alternative to using
  352. the manual.
  353.  
  354.  
  355. THE ESCAPE KEY
  356.  
  357. To leave the help system you simply press the <Esc> key. Generally
  358. speaking, the <Esc> key is always used in Odyssey to abandon the current
  359. activity, whether you are in a menu, an editor, the dialing directory, or
  360. in fact anywhere else.
  361.  
  362. The <Esc> key is also sometimes used as a "cancel" key, depending on the
  363. context. For example, if you are editing a string at the time the <Esc> key
  364. is pressed, then Odyssey treats this as an instruction to cancel the edit,
  365. and restores the original contents of the string. The <Esc> key also
  366. cancels currently executing scripts, file transfers, and dial attempts. If
  367. more than one of these activities is in progress when the you press <Esc>,
  368. then only the most recently begun activity is cancelled.
  369.  
  370.  
  371. THE MENUS
  372.  
  373. Odyssey has pulldown menus which you can access by typing the ALT key in
  374. combination with the first letter of the menu name. For example to pull
  375. down the "Setup" menu you hold down the ALT key and press 'S'.
  376.  
  377. Once a menu is displayed you can then use the left and right arrow keys to
  378. move from menu to menu.
  379.  
  380. To select one of the options from a menu you simply move the highlight bar
  381. to the option you want using the up and down arrow keys, and then press
  382. <Enter>. If you do not understand the purpose of a menu option then simply
  383. move the highlight bar to that option and press F1 for an explanation.
  384.  
  385. An alternative way of selecting a menu option is to type the first letter
  386. of that menu option, if it is highlighted. If you do this then it is not
  387. necessary to press the <Enter> key. This method is not available in all
  388. menus, since it was not always possible for us to invent a sensible name
  389. which resulted in a unique first letter for each option. In those menus
  390. there are no highlighted first characters.
  391.  
  392.  
  393. QUICK KEYS ("Hot" keys)
  394.  
  395. Beside some menu options are symbols such as "ALT-x", where x is a letter.
  396. This tells you that ALT-x is an alternative keyboard command which, if
  397. pressed, produces the same result as selecting that menu option. For
  398. example, if you display the File menu you will notice that beside the "S -
  399. Dos Shell" option is the symbol "ALT-O". So, in this example, ALT-O would
  400. drop you into the DOS shell (if you don't know what that is, then don't
  401. worry, these topics are discussed later in this manual when we come to
  402. describing the menus in detail). Remember that ALT-O means that you hold
  403. down the ALT key while you press the 'O' key (incidentally, if you just
  404. tried it, you type EXIT and <Enter> to get back to Odyssey).
  405.  
  406. Most spare ALT-letter combinations have been assigned to major Odyssey
  407. features, as alternatives to using the menus. These are often called "hot"
  408. keys, and they allow fluent users to dispense with the menus for most
  409. Odyssey tasks, except configuration (Setup). Generally speaking we have
  410. tried to use the "obvious" ALT key for each function (for example, ALT-E to
  411. edit), but naturally one or two of these mnemonics are somewhat contrived,
  412. due to the shortage of available letters.
  413.  
  414. If you press F1 at the main terminal screen you will see a help window
  415. which describes all of the available hot keys, and what they do.
  416.  
  417.  
  418. THE FILE PICKER
  419.  
  420. If you press ALT-E now, you will enter the Odyssey message editor (this is
  421. a Wordstar/Sidekick style editor which is fully described in a later
  422. chapter). Once the edit window has popped up, press the F3 key - this is
  423. the command to select a new file for editing. Instead of typing a filename
  424. just type "*.*" and press <Enter>. Of course, you don't type the quotes.
  425.  
  426. What you see is the file picker window. Generally, throughout Odyssey, if
  427. you are asked to enter a filename you also have the option of entering a
  428. wildcard file name, and the file picker will pop up showing you a list of
  429. files in the current directory which match the wildcard (if you don't know
  430. about wildcards then you should consult your DOS manual).
  431.  
  432. Once the File Picker window is displayed, you can move from filename to
  433. filename using the arrow keys, or you can press <Enter> to select a file,
  434. or press <Esc> to leave the file picker without selecting a file. In the
  435. latter case you will be back at the filename prompt again.
  436.  
  437.  
  438. ODYSSEY CONFIGURATION
  439.  
  440. This section of the manual provides a brief guide to configuring Odyssey
  441. for the first time, so that it works correctly with your equipment. It is
  442. not a complete description of the Odyssey setup options, which are covered
  443. in a later chapter (shareware users can consult the F1 help).
  444.  
  445. For most users, no Odyssey configuration will be necessary, the most
  446. important items having been set up during installation. This will be true
  447. if you have what we have regarded as typical equipment, i.e. a PC with a
  448. hard disk, one or two comm ports, and a 2400 bps Hayes compatible modem,
  449. either internal or external, and without any hardware MNP. This chapter
  450. tells you what you should do if your equipment differs from this standard
  451. in some way. You should avoid making changes to the default setup until you
  452. are absolutely sure that you need to, and that you know what all the
  453. settings do.
  454.  
  455. If you type ALT-S from the main terminal screen you will enter the Odyssey
  456. "Setup" menu. From there it is possible to access sub menus which control
  457. how Odyssey handles the serial port, display, file transfer, and so forth.
  458.  
  459.  
  460. IF YOU HAVE A NON-STANDARD SERIAL PORT.
  461.  
  462. If you want to use Odyssey with a multi-port serial I/O card, and the port
  463. you want to use is not mapped as COM1 or COM2, then you need to enter the
  464. setup/comms submenu, by selecting "Comms Setup" from the Setup menu. From
  465. there you select "Advanced Setup", and you will then be presented with a
  466. table of base addresses and interrupt levels for the eight comm ports which
  467. Odyssey can use (unused comm ports are set to zero). From there you can
  468. move from field to field using the arrow keys, and when you reach a field
  469. you want to change you simply overtype its contents. The left column of
  470. numbers are the base addresses for each of the serial chips, and the right
  471. column are the interrupt levels (normally 4 or 3). The following table
  472. shows the default Odyssey settings:-
  473.  
  474.           Port      Base Address      Int. Level
  475.  
  476.            1          03F8                4
  477.            2          02F8                3
  478.            3          03E8                4
  479.            4          02E8                3
  480.            5          0000                0
  481.            6          0000                0
  482.            7          0000                0
  483.            8          0000                0
  484.  
  485.  
  486. The first two rows define the two standard comms ports recognised by the
  487. industry for IBM PC compatibles. The third and fourth rows define the
  488. addresses most often used for two extra serial ports, however it cannot be
  489. claimed that this "standard" is widely recognised. You will need to check
  490. the manual for yourmulti-port board to determine the correct addresses for
  491. the serial ports.
  492.  
  493. Notice that you have the complete freedom to change these fields as much as
  494. you like. You could for example swap the first and second rows, and Odyssey
  495. would then treat COM1 as COM2 and vice versa (not recommended). This merely
  496. highlights the fact that as far as Odyssey is concerned, the port numbers
  497. mean precisely what you say they mean, and nothing more.
  498.  
  499. Hit <Esc> twice when you have finished with this table, and you will be
  500. back at the Setup menu. Type 'S' to save your changes to disk.
  501.  
  502.  
  503. CHANGING THE DEFAULT FLOW CONTROL METHOD.
  504.  
  505. You may want to enable hardware flow control. There are several possible
  506. reasons why this might be needed, for example:-
  507.  
  508.    o If you have a speed buffered V23 modem (Odyssey cannot  use  a  V23
  509.      modem unless it is speed buffered).
  510.  
  511.    o If you have a multispeed modem, also with speed buffering, and  you
  512.      wish to use all modem supported connect speeds without varying  the
  513.      actual data rate between the modem and the PC.
  514.  
  515.    o If you have  a  modem  with  internal  error  correction  and  data
  516.      compression, such as an MNP5, MNP7 or V.42bis modem.
  517.  
  518. In each of the cases mentioned above, flow control is required because you
  519. will sometimes be sending characters to your modem faster than it can
  520. transmit them, so the modem needs some way of telling you to stop sending.
  521.  
  522. To change the flow control setting, select "Comms Setup" from the setup
  523. menu, then type 'F'. The flow control option will change from "NONE" to
  524. "XON/XOFF". Type 'F' again and the option will change to "RTS/CTS". This is
  525. the hardware flow control setting.
  526.  
  527. Type <Esc> to leave the setup/comms submenu and 'S' to save your changes.
  528.  
  529. **NOTE**: You may also need to configure your modem for RTS/CTS flow
  530. control, although most modems come configured that way by default. You
  531. should check your modem manual if you are not sure. If you find that after
  532. configuring Odyssey for RTS/CTS flow control you can no longer communicate
  533. with your modem then it is likely that it is not configured for hardware
  534. flow control. This means that you will have to set Odyssey's flow control
  535. option back to "NONE" while you reconfigure your modem, then perform the
  536. above steps again.
  537.  
  538.  
  539. MODEM CONTROL
  540.  
  541. For most users, this part of the configuration process is only necessary if
  542. your modem is not Hayes compatible. Some users however may want to check
  543. the "Init string" and "Dialler init string" options. Most users should not
  544. have to change any of these settings.
  545.  
  546. If your modem is not controlled by "AT" commands, then it is not Hayes
  547. compatible. This is unfortunate, since it means that you need to make quite
  548. complicated changes to Odyssey's modem control strings, which of necessity
  549. requires that you have a good grasp of the requirements of your modem. A
  550. careful read of your modem manual is called for.
  551.  
  552. Odyssey mainly uses its knowledge of modem control when dialing. It needs
  553. to know how to get the modem ready to dial, how to send a dial command, and
  554. how to recognise whether the dial command succeeded or failed (i.e. whether
  555. or not a connection was established).
  556.  
  557. To change Odyssey's modem control strings you need to select "Modem
  558. Control" from the setup menu. From top to bottom, the options in this
  559. submenu are as follows (only those required to get you started are
  560. described):-
  561.  
  562.    Dial Prefix.
  563.        This is the string which Odyssey sends to the modem when it wants to
  564.        dial a number. The prefix would normally be followed by the number
  565.        to dial, and a possible suffix. On Hayes modems this prefix is
  566.        "ATDT" or "ATDP" depending on whether you have tone or pulse
  567.        dialing. You need to find the equivalent string in your modem manual.
  568.  
  569.    Dial Suffix.
  570.        This is the string Odyssey uses to complete a modem dial command. On
  571.        Hayes modems this is simply a carriage return, symbolised by the
  572.        character '|' in Odyssey.
  573.  
  574.    Connect String.
  575.        This is the string which the modem sends back to the terminal when
  576.        it has successfully established a connection to a remote computer.
  577.        On Hayes modems the connect string is a simple "CONNECT" (in actual
  578.        fact, Hayes compatible modems faster than 300 bps send back "CONNECT
  579.        xxxx", where xxxx is the connect speed, however you should NOT
  580.        specify this as the connect string in Odyssey, otherwise Odyssey
  581.        would not recognise other forms of the string, e.g. if you specified
  582.        "CONNECT 2400", then Odyssey would never be able to establish a 1200
  583.        bps link). Again, you need to find an equivalent connect string in
  584.        your modem manual.
  585.  
  586.    Failure Strings.
  587.        Odyssey allows up to six of these, and they contain the messages the
  588.        modem sends when a dial attempt fails, perhaps because the number
  589.        was engaged, or because it was a wrong number.
  590.  
  591.    Hangup Command.
  592.        This is the command Odyssey uses to hang up the line if some part of
  593.        the dial attempt was not successful (the MNP negotiation for
  594.        example). If you leave this string blank then Odyssey will hang up
  595.        by dropping DTR for half a second, which should work with most
  596.        modems, whether Hayes compatible or not (if this does NOT work then
  597.        you will have trouble with some Odyssey features, such as the ALT-H
  598.        command).
  599.  
  600.    Init String.
  601.        This is the only modem control string that is used outside the
  602.        Odyssey dialler. If your modem needs to be reconfigured on startup
  603.        for various options, or it does not reliably save its own
  604.        configuration in non-volatile RAM between sessions, then you need to
  605.        enter the initialisation string here. Odyssey sends this string to
  606.        the modem every time it starts up.
  607.  
  608.    Dialler Init String.
  609.        Odyssey sends this string to the modem before every dial attempt. If
  610.        your modem needs some command prior to dialing (perhaps to reset the
  611.        modem back to a default speed), then you put that string here. If
  612.        your modem does not require such a command, then you MUST still
  613.        enter something here. The actual command does not matter, provided
  614.        that it produces some response from the modem. Anything harmless
  615.        will do. Odyssey does not care what the response is, it simply uses
  616.        this as a test that a modem is actually connected and ready before
  617.        it wastes time trying to dial.
  618.  
  619.    Connect Timeout.
  620.        When Odyssey issues a dial command to the modem, it starts a timer,
  621.        and waits for a reply. If the timer expires without a reply having
  622.        been received then Odyssey assumes that the dial command has failed,
  623.        and sends a string to the modem to cancel the attempt (the hangup
  624.        command). The connect timeout is the time in seconds that Odyssey
  625.        allows for the response. The default is 45 seconds, which is enough
  626.        for most circumstances, but longer may be necessary if you are
  627.        making an international call, or you may want to make it shorter if
  628.        you have tone dialing, and find that Odyssey is waiting an
  629.        excessively long time to report failure when the dial attempt has
  630.        been unsuccessful.
  631.  
  632.    Number of Redials
  633.        The number of times Odyssey should attempt to dial any number.
  634.  
  635.    Pause between Dials
  636.        When redialing, or stepping through a dial queue, Odyssey will wait
  637.        this number of seconds between dial attempts.
  638.  
  639.  
  640. DISPLAY SETUP
  641.  
  642. The only change that a new user might want to make to the display setup is
  643. the "Snow Check" option. If you find that you get interference on the
  644. display when Odyssey displays a window, then you might want to set this
  645. option to "ON". Enabling snow checking will stop the interference, but has
  646. a bad effect on the speed with which Odyssey can update the display. You
  647. should therefore not enable this option unless it is really required.
  648.  
  649.  
  650. GENERAL SETUP
  651.  
  652. You may want to change the "Directory for downloads" option to a directory
  653. of your choice. Note that if you name a directory using this menu option
  654. that the directory MUST exist already. Odyssey will not create it for you.
  655.  
  656.  
  657. EDITOR SETUP
  658.  
  659. You may want to reduce the editor buffer sizes using this sub-menu, if you
  660. find that you are very short of memory (this often happens to users who are
  661. especially fond of large TSR utilities).
  662.  
  663.  
  664. SAVING YOUR CHANGES.
  665.  
  666. The above paragraphs described all of the configuration changes which might
  667. be necessary to get a new user off the ground, and ready to dial a number.
  668. Most users will not have had to change anything. If you did, then now is
  669. the time to save those changes. To do this simply pop up the Setup menu and
  670. type 'S'.
  671.  
  672.  
  673. MODEM CONFIGURATION
  674.  
  675. Your modem configuration may need to be changed before it can be used
  676. successfully by Odyssey. This section lists some points to look out for.
  677.  
  678.     DCD Signals.
  679.         Your modem must not be configured such that it holds the DCD signal
  680.         permanently high. You can check this by running Odyssey and looking
  681.         at the status line. If the status line shows the symbol "DCD", even
  682.         when you are not connected to a remote computer, then your modem
  683.         has DCD tied high, and this will need to be fixed by sending the
  684.         appropriate command to your modem, or making a change to the modem
  685.         switches (if your modem has switches). The modem manual will have
  686.         details. If you cannot fix this problem then you will not be able
  687.         to use Odyssey's software MNP, or host mode.
  688.  
  689.     DTR Signal.
  690.         Your modem must not be configured to ignore the DTR signal from the
  691.         PC. If you find that the ALT-H command in Odyssey does not drop the
  692.         line, then your modem is probably configured to ignore DTR. Check
  693.         your modem manual for the command or switch setting to fix this
  694.         problem.
  695.  
  696.     Flow Control (Handshaking).
  697.         Some modems have a software flow control option. If your modem is
  698.         configured for XON/XOFF or ENQ/ACK flow control then you should
  699.         disable this option, and set it to use hardware
  700.         <$IRTS/CTS>(RTS/CTS) flow control instead. If you do not do this
  701.         then Odyssey will be unable to transmit the characters used for
  702.         flow control to a remote computer. This could prevent software MNP
  703.         or file transfer from working correctly.
  704.  
  705.  
  706. HARDWARE (MODEM) VS SOFTWARE (ODYSSEY) ERROR CORRECTION.
  707.  
  708. If your modem supports MNP or some other error correction protocol then you
  709. will need to decide whether you wish to use Odyssey's MNP, or the modem's
  710. own error correction. Generally, if the modem supports a lower MNP class
  711. than Odyssey (i.e. lower than class 5), then you will want to disable the
  712. modem's own error correction. This is needed because Odyssey's MNP cannot
  713. work if the modem is intercepting the MNP protocol information before
  714. Odyssey can see it.
  715.  
  716. If your modem supports MNP5 or better, then you will want to use the
  717. modem's own MNP instead of Odyssey's, since the modem can use the MNP
  718. synchronous mode option which is beyond the capability of the IBM PC serial
  719. chip, and will therefore provide better performance. In this case you
  720. should make sure that Odyssey is not configured for software MNP in the
  721. Setup/Comms menu, or in any of the dialing directory entries.
  722.  
  723. **NOTE**: If your modem has hardware MNP5 (or better) then you should
  724. remember to at least double the speed at which Odyssey communicates with
  725. the modem. For example, if your modem is a V22bis (2400 bps) modem with
  726. MNP5 then you should set the Odyssey baud rate to 4800 or 9600 bps,
  727. otherwise the PC-modem link would be a bottleneck, nullifying the
  728. performance improvements of the MNP data compression. You should NOT do
  729. this if you are using Odyssey's software MNP.
  730.  
  731.  
  732. COMMAND ECHO, AND OTHER MODEM SETTINGS.
  733.  
  734. The modem should be configured so that it echoes commands from the
  735. terminal, and so that it produces verbal result codes. For a Hayes
  736. compatible, the appropriate command is "AT E1 V1" <Enter>.
  737.  
  738. If your modem saves its settings in RAM between sessions, you may have to
  739. enter a command to make any changes permanent. On some Hayes compatible
  740. modems the correct command is "AT &W" <Enter>.
  741.  
  742. If your modem does not save settings in non-volatile RAM, and the settings
  743. you need are not the default settings, then you may need to place the above
  744. commands in the Modem Init String, which you can define using the
  745. Setup/Modem submenu. For the above example, the correct Init String would
  746. be "ATE1V1~|"
  747.  
  748.  
  749. THE CABLE
  750.  
  751. This section naturally applies only to those users who need a cable, i.e.
  752. those using external modems.
  753.  
  754. The correct pinout of cables to be used with external modems, or with
  755. direct PC-to-PC connections is described in Appendix A. You should be
  756. extremely wary of using cables which have previously been used for some
  757. other task, perhaps for connecting your PC to a printer. These cables
  758. typically have all sorts of wiring patches made to them to stop the PC
  759. falling over because one or other pin was not held high. Modem
  760. communications requires many more signals from the RS232 interface than
  761. does a serial printer, so you should make sure that the cable you use
  762. correctly makes these signals available to the PC. You are advised to get a
  763. cable made up according to the appropriate diagram in Appendix A.
  764.  
  765. For those with PC/XT or PS/2 type serial ports (i.e. with standard 25 pin
  766. connectors) this is extremely easy, since the cable you require is simply a
  767. flat ribbon cable with a snap on connector at each end. These cables are
  768. cheap and easy to make up in a matter of minutes, your dealer may be able
  769. to help you find someone who can make one.
  770.  
  771.  
  772. CHECKING OUT THE INSTALLATION
  773.  
  774. Once you have completed installation and configuration, it is time to check
  775. that basic communication with the modem is working properly. To do this you
  776. send a simple command to the modem. If your modem is a Hayes compatible,
  777. then the following is an adequate test.
  778.  
  779. Make sure that your keyboard has CAPS LOCK set. Then type "AT" and press
  780. <Enter> (do not type the quotes). The modem should respond with "OK". If
  781. you do not get this response then check:-
  782.  
  783.       o That the modem is connected and powered.
  784.       o That Odyssey is configured for the correct port number and
  785.         baud rate.
  786.  
  787. If you do get the "OK" response, then your system is ready for use.
  788.  
  789.  
  790. MAKING A FIRST CALL
  791.  
  792. The first thing you need to do to make a call using Odyssey is decide which
  793. service you want to dial. You need to know what telephone number to use,
  794. what baud rate and parity setting the system expects, and whether it
  795. supports error correction. This information is often published along with
  796. the telephone number in popular computing magazines. If there is no mention
  797. of MNP or V42 in the published data then the service may not support error
  798. correction.
  799.  
  800. Once you have the information you need, press ALT-N to display the Odyssey
  801. dialing directory. Press ALT-I to create a blank line at the first entry.
  802. Now press the "F2" key to edit the new entry.
  803.  
  804. Now, from top to bottom, fill in all the fields in the dialling directory
  805. entry. The first entry is the key, which you may leave blank - press
  806. <Enter> to step to the next field. The second field is the service name,
  807. and can contain anything you like - type something and press <Enter> to
  808. complete the change. The next field is the telephone number, which you
  809. should enter in format similar to those you see in other entries. The next
  810. field is the baud rate - you change this by pressing the space bar, which
  811. causes a menu of available baud rates to appear - simply highlight which
  812. baud rate you need and press <Enter>. Next is the parity setting - cycle
  813. through the allowed settings with the space bar, until you get to the
  814. setting you want. Next is the required terminal emulation - hit <Enter> to
  815. skip this if TTY is acceptable, otherwise press the space bar for a menu of
  816. available terminals. Press <Enter> to skip the "Log File", "Script Name"
  817. and "Keyboard file" fields. Next is the Error Correction field; if the
  818. system you will call supports error correction then press the space bar to
  819. enable it. Don't bother with the remaining fields; just press <Esc> now to
  820. tell the dialling directory editor that you are finished. You will be asked
  821. "Save changes? (Y/N): ", to which you should answer yes (press 'Y'). The
  822. box containing the entry details will disappear, and you will see that the
  823. dialling directory has been updated with the details of your new entry.
  824.  
  825. Don't worry if you make a typing error while you are changing a field. You
  826. can always go back to a previous field using the arrow keys.
  827.  
  828. Now that you have created your new dialling directory entry, just press the
  829. <Enter> key. Odyssey will dial the number you just entered, and provided a
  830. modem answers, you will soon after be online for the first time. Follow the
  831. instructions given by the system when you wish to disconnect.
  832.  
  833. ===========================================================================
  834. ===========================================================================
  835.  
  836. INTRODUCTION TO THE SCRIPT LANGUAGE
  837. -----------------------------------
  838.  
  839. If you like messing about with script languages in comms packages then you
  840. are in luck! Odyssey has one of the most powerful programming languages you
  841. will see in any product not aimed exclusively at programmers.
  842.  
  843.  
  844. WHAT IS THE SCRIPT LANGUAGE FOR?
  845.  
  846. As a PC user, you are probably familiar with the concept of "batch" files.
  847. These are text files, all with a .BAT extension so that DOS will recognise
  848. them, and all containing a simple sort of program which the DOS command
  849. interpreter can understand. DOS batch files consist mainly of ordinary DOS
  850. commands, although batch files can also use programming features such as
  851. IF, GOTO and REM statements. The purpose of the batch file is to make it
  852. easier for you to perform any repetitive task. Instead of entering
  853. individual commands to change directories, load a mouse driver, run a word
  854. processor, and change back to the root directory when you exit, you can
  855. replace all of the above with a single command which executes a batch file
  856. containing those instructions.
  857.  
  858. A comms package needs a script language for similar reasons. Many of the
  859. things you do inside a comms package are repetitive tasks which you perform
  860. (at least) daily. For example, you may log on to your friendly local BBS to
  861. check if any electronic mail has arrived. If any has, then you might want
  862. to open a log file, capture the new messages, log off, and read the
  863. messages offline. If you use the same service often enough, then it will
  864. almost certainly be worthwhile for you to prepare a script to automate the
  865. procedure.
  866.  
  867. Using a script has at least these four advantages:-
  868.  
  869.     o Your hands are free for other work while the comms package
  870.       gets on with its daily chore.
  871.     o Once a script is prepared it can be used by anyone, including
  872.       those who have no knowledge of how to perform the task manually.
  873.     o Time wasting typing mistakes are eliminated.
  874.     o The script responds to prompts and types messages much faster
  875.       than a human possibly could. So online time is minimised, saving
  876.       money.
  877.  
  878. However, there is one fly in the ointment, which is that a script can be
  879. badly affected by line noise. For example, if a script is waiting for a
  880. particular prompt, and that prompt is corrupted by spurious characters,
  881. then depending on how carefully the script was written it could end up
  882. waiting all day for a prompt that has already passed by.
  883.  
  884. This is where error correction comes into its own. Whether you use MNP (or
  885. other error control standard) provided in your modem, or Odyssey's software
  886. MNP, the important feature in common is that it is no longer possible for a
  887. prompt to be corrupted by line noise, and so a breakdown such as the one
  888. described above can never occur. Of course, this requires that the host BBS
  889. supports MNP, but these days that is more and more likely to be the case.
  890. MNP cannot prevent a carrier loss, another potential cause of script
  891. failure, however that eventuality is usually much easier to cope with than
  892. the problem of noise. Error correction has turned a script language from an
  893. arguable white elephant into an essential feature of modern communications
  894. packages.
  895.  
  896. So, you are now sold on the merits of a script language, however the nature
  897. of the script language which should be provided in a comms package is a
  898. matter for debate. Should we, the implementor of the package, go for power
  899. or simplicity in the script language? On the one hand a limited script
  900. language is usually easier for a beginner to learn, on the other hand our
  901. beginner will not be that forever, and sooner or later will smack into the
  902. brick wall, which is a limited script language.
  903.  
  904. In Odyssey, we decided to go for power, but in such a way that beginners
  905. can largely ignore the wide range of features until the day comes when they
  906. are needed. A learn mode is provided which is capable of creating scripts
  907. automatically, requiring negligible understanding of the underlying
  908. language. From there you can progress to simple, manually created scripts
  909. using a basic set of four script commands, and finally, when you are
  910. feeling confident, you have the option to learn the complete script
  911. language.
  912.  
  913. For programmers: Odyssey script closely resembles a conventional
  914. programming language, especially structured languages like Pascal, Modula-2
  915. or C. If you have a familiarity with any of these, or with any other common
  916. language then you should find that you are able to quickly progress to the
  917. expert level.
  918.  
  919.  
  920. A NOTE ABOUT SCRIPT EXECUTION.
  921.  
  922. In some packages, running a script takes over the comms package completely,
  923. blocking out everything the user does at the keyboard, except for the
  924. "cancel script" key, which is usually an <Esc>. In Odyssey, the script
  925. executes in "parallel" with the user, and so you are free to type Odyssey
  926. commands while a script is running, and to "help a script along" if a
  927. mistake in the script or a burst of line noise causes it to get stuck at a
  928. prompt. However, this is not true "background" operation, since entering
  929. any major Odyssey subsystem (e.g. the menus, or the editor), will cause the
  930. script to pause until you return to terminal mode.
  931.  
  932.  
  933. USING LEARN MODE TO CREATE SCRIPTS.
  934.  
  935. Learn mode provides the easiest way for a beginner to create an Odyssey
  936. script. Typically this facility will be used to create logon scripts for a
  937. variety of host BBS services. All you need to know when creating such a
  938. script using learn mode is how to log on to that service manually. You
  939. teach Odyssey how to do it once, and thereafter Odyssey will be able to do
  940. the job for you.
  941.  
  942. The first step in using Learn mode to create a logon script is to create a
  943. dialing directory entry for the new service - see the chapter on "Using
  944. Odyssey" for a description of how to add entries to the dialing directory.
  945.  
  946. When you create the dialing directory entry, you must put something in the
  947. "key" column. This key can be anything you like, up to seven characters
  948. long, but it should be unique to that entry (i.e. until you are more
  949. experienced, you should make sure that the new key is not the same as that
  950. of any other entry). The purpose of the key is twofold: first it allows a
  951. script created by learn mode to identify the correct directory entry to
  952. use, secondly it allows a script to be attached to that entry so that the
  953. script is automatically started when you select the entry for dialing. A
  954. script is "attached" to a dialing directory entry when the script has the
  955. same name as the directory entry key.
  956.  
  957. For the sake of the following example, let us suppose that you want to
  958. create a script for dialing a BBS host called "MICROP". First, you create
  959. the dialing directory entry, making sure that you have the right settings
  960. for baud rate, parity, MNP and so forth. In the key field of the new line
  961. enter the word "MICROP" (without the quote marks). Having completed the
  962. directory entry, including the key, you then press <Esc> to return to the
  963. Odyssey terminal screen. Remember not to press <Esc> before you have
  964. completed all the fields in an entry, otherwise the <Esc> key will be
  965. interpreted as an instruction to abandon the changes you have made. The
  966. entry has been completed when the coloured bar returns to highlighting the
  967. entire line.
  968.  
  969. From the terminal mode, press ALT-G to display the General menu, then type
  970. 'L' to select the "Learn a Script" option. Odyssey will ask you for a name
  971. to give to the learned script, in this example you should give the name
  972. "MICROP" (without the quotes). The name given must match the directory
  973. entry key you entered earlier, so if you used a different key name, you
  974. should also use that alternative at the script name prompt. When you have
  975. typed in the script name you should press <Enter> to start learn mode.
  976.  
  977. Learn mode is now active. From now on, everything you do will be noted by
  978. Odyssey, and duplicated in the new script, so you should avoid doing
  979. anything which is unrelated to the task of logging on to the service.
  980.  
  981. Press ALT-N to bring up the dialing directory again, moving the highlight
  982. bar to the entry you created earlier (this should still be highlighted if
  983. you exactly followed the instructions given above), then press <Enter> to
  984. dial the number, and wait until you get a connection.
  985.  
  986. On most host systems, the next thing you will see is the BBS logo, followed
  987. by a prompt for your user name (the name the BBS knows you by). You should
  988. enter that now. The BBS will then prompt you for a password, and again you
  989. should respond. You are now logged on to the BBS.
  990.  
  991. Odyssey now knows everything it needs to know in order to log on to that
  992. service, so assuming that is as far as you want to take it, you should now
  993. leave Learn mode by pressing <Esc>. Odyssey will convert what it has
  994. learned into a script file and write it to disk. If you have been following
  995. this example then the file created will be called "MICROP.SCR" (all Odyssey
  996. scripts have the .SCR extension, in the same way that DOS batch files
  997. always have a .BAT extension).
  998.  
  999. Learn mode is now terminated. Odyssey is no longer remembering what you do.
  1000. You can if you wish stay on the BBS to continue this session, or you may
  1001. log off in order to test the newly created script.
  1002.  
  1003. The next time you want to call that service simply run Odyssey, press ALT-N
  1004. to call up the dialing directory, select the correct entry using the
  1005. highlight bar, and press <Enter> to dial. Odyssey will automatically run
  1006. the learned script, which will not only dial the number for you, but also
  1007. enter your user name and password details, just as you did the first time,
  1008. leaving you logged on to the BBS and ready to read messages or transfer
  1009. files.
  1010.  
  1011. There are other ways of running scripts in Odyssey, a subject which is
  1012. discussed later in this chapter (see the section "How to Run a Script").
  1013.  
  1014. WARNING: If, during the learn procedure, something goes wrong with the
  1015. login process, for example if you get an engaged tone, then you should
  1016. abort learn mode by pressing the <Esc> key, then later you should start
  1017. again from scratch. Whatever you do, you should NOT attempt to redial the
  1018. number without first stopping and restarting learn mode - if you ignore
  1019. this warning you will have dialled the number twice, and so will the
  1020. Odyssey script when you run it!
  1021.  
  1022.  
  1023. LIMITATIONS OF LEARN MODE
  1024.  
  1025. For most systems, Odyssey learn mode will do a perfectly good job of
  1026. automatically creating a login script for you. However, some systems may
  1027. cause it problems if the timing of responses is very critical.
  1028.  
  1029. Strict timing problems occur when there is a minimum delay which must occur
  1030. between a prompt and a corresponding reply. Odyssey is not able to
  1031. differentiate between the delay of a slow typist, and a delay introduced
  1032. deliberately by the typist because he or she knows that the system will not
  1033. react correctly if the response comes too quickly. The British Telecom PSS
  1034. service is an example of a system in which you must wait a second or two
  1035. after a connection is established before you can start the <CR>A2<CR> login
  1036. process. If the delay inserted by Odyssey is too short then you may have to
  1037. increase it, by editing the script. For that you can use the built in
  1038. Odyssey editor, or else use any preferred external editor, provided that it
  1039. is capable of producing a clean ASCII text file. Look for the "Delay(xx)"
  1040. commands inserted by learn mode, and increase the number shown between the
  1041. brackets (which is a delay in seconds). Remember to save your changes - if
  1042. you use the Odyssey editor then the save key is F2.
  1043.  
  1044.  
  1045. CREATING YOUR FIRST SCRIPT BY HAND.
  1046.  
  1047. For the slightly more adventurous, this section describes how to create
  1048. scripts manually, using a minimal understanding of the script language, but
  1049. providing a little more flexibility than is possible with learn mode.
  1050. Reading this chapter will also allow you to better understand scripts
  1051. created by learn mode, should you need to modify one.
  1052.  
  1053. A script is created with a text editor; probably the most convenient editor
  1054. would be the one built into Odyssey (accessed with ALT-E), however you are
  1055. free to use any external text editor provided that it produces clean ASCII
  1056. text files. Use of the Odyssey editor is not described here; if you are not
  1057. familiar with it then you should perhaps read the chapter on the editor
  1058. first, before delving into the script language. A script file must have an
  1059. extension of .SCR before it will be recognised by Odyssey, and furthermore
  1060. it must have the same name as a dialing directory entry key if the script
  1061. is to be invoked automatically when that directory entry is selected. You
  1062. are not required to attach scripts in this way, since scripts can also be
  1063. invoked from the Call menu, or from the DOS command line when running
  1064. Odyssey. Remember to put the script file in the "Odyssey Files" directory,
  1065. so that Odyssey can find it. This directory is named in the Setup/General
  1066. menu, or if not named then the current DOS working directory is assumed.
  1067.  
  1068. The Odyssey script language currently provides more than 100 built in
  1069. commands, yet it is quite possible to write useful Odyssey scripts using
  1070. only four of them. However, first you must learn rule number one, which is
  1071. that all Odyssey scripts start from the following minimum outline:-
  1072.  
  1073.       SCRIPT myscript;
  1074.       BEGIN
  1075.  
  1076.       END;
  1077.  
  1078. This "skeleton" is what Odyssey expects from any script, and its purpose is
  1079. to allow Odyssey to easily confirm that this file it is trying to use is
  1080. indeed a script, and helps it to more easily find where a sequence of
  1081. commands begin and end. The "myscript" name need not be literally as shown,
  1082. in fact it can be almost anything you like (its purpose is to give the
  1083. script a meaningful name which will be understood by a person reading a
  1084. printed listing). However, you should perhaps leave it as shown until you
  1085. become familiar with the rules surrounding the naming of things in the
  1086. Odyssey script language. Note the semicolons after the "myscript" and after
  1087. the "END" are required. The words "SCRIPT", "BEGIN" and "END" are shown in
  1088. upper case for clarity only. You can enter them in lower case if you prefer.
  1089.  
  1090. Once you have created the basic script skeleton as shown above, you may
  1091. then enter commands between the BEGIN and END lines. The basic four
  1092. commands you may use are DIAL, WAITFOR, TRANSMIT and DELAY. These commands
  1093. are described below.
  1094.  
  1095. DIAL()
  1096.  
  1097. The Dial command is used to dial a number, taking the necessary details
  1098. from a dialing directory entry. In order to use the dial command you must
  1099. pass it the name of a directory entry key, and that key must match an
  1100. existing directory entry, otherwise the dial command will not be able to
  1101. proceed. Here is an example of the dial command:-
  1102.  
  1103.         Dial("MICROP");
  1104.  
  1105. Note that the key name is surrounded both by double quotes and round
  1106. brackets, and that the command is followed by a semicolon. This may seem
  1107. like excessive punctuation, but once you get around to learning the
  1108. complete language you will find out why they are required. For the moment
  1109. simply follow the rules.
  1110.  
  1111. In the above example, the script would look up a dialing directory entry
  1112. with a key of "MICROP", and would dial that number. The script will resume
  1113. from the statement following the Dial command once a connection has been
  1114. established.
  1115.  
  1116.  
  1117. WAITFOR()
  1118.  
  1119. WaitFor is a basic command which you will use a lot, however expert you
  1120. become. This command tells the script to wait until a particular sequence
  1121. of characters (called a "string") arrives from the host. Here is an example
  1122. of the waitfor command:-
  1123.  
  1124.         WaitFor("User name?");
  1125.  
  1126. Note again the use of double quotes, round brackets and the terminating
  1127. semicolon. In this example the script will wait until the string "User
  1128. name?" arrives from the host.
  1129.  
  1130. You can also, optionally, add a timeout to the WaitFor command. This would
  1131. mean that instead of the WaitFor command waiting forever for the string to
  1132. arrive, it can terminate either when the string arrives, or when the
  1133. timeout period has elapsed. This is an example of the WaitFor command
  1134. making use of a timeout:-
  1135.  
  1136.         WaitFor("User name?",10);
  1137.  
  1138. In the above example the WaitFor will terminate when the string "User
  1139. name?" arrives from the modem, or when a ten second period has passed.
  1140.  
  1141.  
  1142. TRANSMIT()
  1143.  
  1144. The Transmit() command tells the script to transmit a string via the serial
  1145. port. Here is an example of the transmit command:-
  1146.  
  1147.         Transmit("John Smith|");
  1148.  
  1149. In this example the script would transmit the characters inside the double
  1150. quotes to the modem, and hence to the host BBS. Note the '|' character
  1151. which forms part of this string. This is treated as a special character by
  1152. the transmit command, in that it is not transmitted literally, but instead
  1153. tells the transmit command to send the code for newline (usually the
  1154. carriage return character). This is required because if you were typing
  1155. this manually, in most cases the host would require you to press <Enter> to
  1156. complete the answer to the prompt.
  1157.  
  1158.  
  1159. DELAY()
  1160.  
  1161. This is the last of the four basic commands. The purpose of this command is
  1162. to insert a delay into the script, usually to avoid sending messages to the
  1163. host BBS before it is ready to receive them. This command is given a number
  1164. which is the delay you require, in seconds. Here is an example of the delay
  1165. command:-
  1166.  
  1167.         Delay(2);
  1168.  
  1169. In the above example, the script would pause for two seconds, and would
  1170. then continue with the next command.
  1171.  
  1172.  
  1173. PUTTING IT ALL TOGETHER.
  1174.  
  1175. Now that you know what the basic commands are, we can proceed to put them
  1176. together in the form of a script to log on to an imaginary BBS.
  1177.  
  1178. In the following example the script will dial a BBS which has an entry in
  1179. your dialing directory with a key of "MICROP". The script will then wait
  1180. for the username prompt from the BBS and enter a name of John Smith, then
  1181. it will wait for the password prompt, and answer it with "smithy". In both
  1182. cases it will follow the characters in the reply with a carriage return
  1183. code.
  1184.  
  1185.         SCRIPT myscript;
  1186.         BEGIN
  1187.              Dial("MICROP");
  1188.              WaitFor("User name? ");
  1189.              Transmit("John Smith|");
  1190.              WaitFor("Password? ");
  1191.              Transmit("smithy|");
  1192.         END;
  1193.  
  1194. Note the indentation of the lines containing the commands. This is not a
  1195. requirement of the script language, but in many people's opinion it does
  1196. make the script look nicer, as well as making it a little easier to follow.
  1197. This is a good habit to get into early, since readability becomes very
  1198. important once you begin to write larger scripts using the advanced script
  1199. features.
  1200.  
  1201. These four basic commands should enable you to write a login script for any
  1202. service. However, such a script does not deal with errors which might occur
  1203. (such as an engaged tone). If that happens then you should press the <Esc>
  1204. key to abort the script. The next section contains information on how to
  1205. have the script recognise errors itself, however you needn't read that now
  1206. unless you are feeling confident!
  1207.  
  1208.  
  1209. DEALING WITH ERRORS
  1210.  
  1211. Although the example script shown above will work perfectly in most cases,
  1212. it does have a problem, in that it makes no attempt at all to cater for
  1213. those occasions when things do NOT work perfectly. For example, suppose the
  1214. number dialled is engaged - the script shown does not check whether the
  1215. dial attempt succeeded, so succeed or fail, the script will go on to
  1216. execute the next statement. The next statement is a WaitFor, and that is
  1217. never going to succeed if the dial attempt failed, because Odyssey is at
  1218. that time not even connected to the host. We therefore need to put some
  1219. error protection into the script, which we can do using an IF statement.
  1220.  
  1221. An IF statement can be used to test whether a command succeeded. You cannot
  1222. test the success of all commands, because not all of them can fail.
  1223. However, among the commands you can test are DIAL and WAITFOR.
  1224.  
  1225. Here is the example script again, but this time we test the success of the
  1226. DIAL command using an IF statement. If the dial command is not successful
  1227. then the script stops:-
  1228.  
  1229.         SCRIPT myscript;
  1230.         BEGIN
  1231.              Write("Calling the MICROP BBS Service.|");
  1232.              IF Dial("MICROP") THEN
  1233.                  WaitFor("User name? ");
  1234.                  Transmit("John Smith|");
  1235.                  WaitFor("Password? ");
  1236.                  Transmit("smithy|");
  1237.              END;
  1238.         END;
  1239.  
  1240. Note the extra END which has appeared. The IF statement always has an END
  1241. associated with it in the same way that a BEGIN always has an END, and it
  1242. serves the same purpose, i.e. to "bracket" a sequence of commands. In the
  1243. above example the sequence of commands between the "IF" line and the first
  1244. "END" will only be executed if the dial attempt succeeds. You could if you
  1245. wished put other commands before the "IF" line, or following the first
  1246. "END" line, and these would not be dependent on the "IF" test. In other
  1247. words those commands would be executed whether or not the dial attempt
  1248. succeeds. This is how you control the execution of commands in the Odyssey
  1249. script language. The "Write" command is an example of such a command which
  1250. will always be executed when you run this script (the Write command has not
  1251. been previously discussed, it simply displays a message on the screen, but
  1252. does not transmit that message to the modem).
  1253.  
  1254. Finally, we would like to cope with the situation that occurs when you get
  1255. a connection with a modem, but the remote computer does not respond. To
  1256. handle this, you can again use an IF statement, this time using it to test
  1257. the success of a WaitFor command. Since we now want the WaitFor to give up
  1258. after a certain period, we will specify a timeout this time - ten seconds
  1259. in the following example:-
  1260.  
  1261.         SCRIPT myscript;
  1262.         BEGIN
  1263.              Write("Calling the MICROP BBS Service.|");
  1264.              IF Dial("MICROP") THEN
  1265.                  IF WaitFor("User name? ",10) THEN
  1266.                      Transmit("John Smith|");
  1267.                      WaitFor("Password? ");
  1268.                      Transmit("smithy|");
  1269.                  END;
  1270.              END;
  1271.         END;
  1272.  
  1273.  
  1274.  
  1275. SEMICOLONS
  1276.  
  1277. We should perhaps return to the question of the placement of semicolons. In
  1278. the first script example there was a semicolon following the first use of
  1279. WaitFor, yet there was no semicolon after the first WaitFor in the most
  1280. recent example shown. Also, there is no semicolon on either of the two "IF"
  1281. lines. If you study the above script you may be able to spot the common
  1282. factor for yourself, which is that a semicolon tells the script processor
  1283. where a complete statement ends. Let us take the last script from top to
  1284. bottom - "SCRIPT myscript" is a complete statement, so it is followed by a
  1285. semicolon. "BEGIN" is not a complete statement, since it must have a
  1286. matching end, so it is NOT followed by a semicolon. The "Write" line is a
  1287. complete statement, so there is a semicolon. The first "IF" line is NOT a
  1288. complete statement, since like the "BEGIN", it must have a matching "END" -
  1289. and so on down the list. In the case of the first "WaitFor", it is not a
  1290. complete statement, since it forms part of an "IF condition THEN" sequence,
  1291. whereas an unconditional "WaitFor" is a complete statement, and so is
  1292. followed by a semicolon.
  1293.  
  1294. The semicolon in the Odyssey script language serves more or less the same
  1295. purpose as the full stop which terminates a written sentence in the English
  1296. language. The only real difference is that the script language grammar
  1297. allows any "sentence" to be constructed from any number of smaller
  1298. sub-sentences, each of which is also terminated with a semicolon.
  1299.  
  1300. Take all the time you need to understand this section of the manual. If all
  1301. was not clear the first time you read it then you are encouraged to read it
  1302. again. When you have read and understood the above discussion you will know
  1303. everything you need to know in order to manually create your own login
  1304. scripts for any BBS, and have them cope with almost any eventuality.
  1305.  
  1306.  
  1307. HOW TO RUN A SCRIPT.
  1308.  
  1309. From the Call menu.
  1310.  
  1311. You can run a script from the Call menu. Press ALT-C from Odyssey terminal
  1312. mode and the Call menu will be displayed. This menu contains the names of
  1313. each of the scripts which Odyssey finds in its "Odyssey files" directory
  1314. (named in Setup/General), or if not named, in the current DOS working
  1315. directory. If there are more scripts available than can be displayed in a
  1316. single menu (eight), then other script names can be seen by paging up and
  1317. down the list using the PgUp and PgDn keys. To execute any script from the
  1318. Call menu simply type the number shown alongside the menu option.
  1319.  
  1320. From the Files menu.
  1321.  
  1322. A script can also be executed from the Files menu. Press ALT-F from Odyssey
  1323. terminal mode to display the menu, then select the "Execute Script" option.
  1324. This menu option allows you to access scripts which are not stored in the
  1325. "Odyssey files" directory, you must therefore supply a complete path, for
  1326. example "c:\otherdir\myscript".
  1327.  
  1328. From the Dialling Directory.
  1329.  
  1330. When you press <Enter> on a dialing directory entry in order to dial a BBS,
  1331. Odyssey will check for an "attached" script, and will load and run one
  1332. automatically, if it finds that an attached script exists. Odyssey
  1333. considers a script to be attached to a dialing directory entry when the
  1334. name of the script matches the key field of that dialing directory entry.
  1335. For example, if the key for the chosen entry is "MICROP", and a script file
  1336. exists called "MICROP.SCR", then Odyssey will load and run "MICROP.SCR"
  1337. instead of dialing the number. What happens from that moment is entirely up
  1338. to the script, but in most cases it will at some point make a call to the
  1339. script "DIAL" command, thus allowing the dialing procedure to continue.
  1340.  
  1341. From another Script.
  1342.  
  1343. A script has the facility to chain to any other script. It does this by
  1344. making use of the script "CHAIN" command. The script which used the chain
  1345. command is halted, and the chained script (if found) is executed. Odyssey
  1346. has no facility to "call" another script, i.e. with control returning to
  1347. the original script, however one possible approach if you need to do that
  1348. would be to explicitly chain back to the parent script from the child.
  1349.  
  1350. From the DOS Command Line or Batch File.
  1351.  
  1352. You can execute Odyssey scripts directly from the DOS command line, or from
  1353. a DOS batch file, by supplying the name of the script as a command line
  1354. argument to Odyssey. For example the DOS command:-
  1355.  
  1356.          C:\ODYSSEY> ody microp
  1357.  
  1358. would tell Odyssey to execute the script "MICROP.SCR" immediately after
  1359. loading. Odyssey does not display its normal welcome banner when a script
  1360. is named on the command line.
  1361.  
  1362.  
  1363. Stopping a Script
  1364.  
  1365. Pressing the <Esc> key while a script is running will cancel the script,
  1366. unless the script has used a special CanEscape(FALSE) command to disable
  1367. this feature. If you want to type and transmit an ESC character while a
  1368. script is running, without aborting the script, then a keyboard command has
  1369. been provided for that purpose - try ALT-F2.
  1370.  
  1371.  
  1372. SCRIPT COMMANDS
  1373.  
  1374. The above should be enough to get you started with simple scripts. The
  1375. manual for the full Odyssey package does of course cover the script
  1376. language syntax in much greater detail, as well as providing full
  1377. descriptions of each of the built in commands, with an example for each
  1378. one. This summarised guide however will simply list the commands which are
  1379. available:-
  1380.  
  1381. MODEM AND SERIAL I/O COMMANDS.
  1382.  
  1383. PROC AutoAnswer(On:Flag);
  1384. PROC Break(tenths:Number);
  1385. PROC HangUp();
  1386. PROC ModemInit();
  1387. FUNC MNPAnswer():Flag;
  1388. FUNC MNPClass():Number;
  1389. FUNC MNPConnect():Flag;
  1390. FUNC OnLine():Flag;
  1391. PROC Paste(s:String);
  1392. PROC PortInit(Baud,Databits,Parity,Stopbits:Number);
  1393. PROC Receive(VAR s:String; timeout:Number [; NoEcho]);
  1394. PROC SetPort(PortNo:Number);
  1395. PROC Sleep();
  1396. PROC Transmit(s:String);
  1397.  
  1398. DISPLAY AND KEYBOARD COMMANDS.
  1399.  
  1400. PROC Alarm(Seconds:Number);
  1401. PROC BackGnd(Colour:Number);
  1402. PROC ClrEol();
  1403. PROC ClrEos();
  1404. PROC ClrLine();
  1405. PROC ClrScr();
  1406. FUNC ColourDisplay():Flag;
  1407. PROC DelLine();
  1408. PROC DisableCursor();
  1409. PROC EnableCursor();
  1410. PROC ForeGnd(Colour:Number);
  1411. PROC GotoXY(x,y:Number);
  1412. PROC InsLine();
  1413. FUNC KeyPressed():Flag;
  1414. PROC KillWindow();
  1415. FUNC LoadKeyDef(kdf_name:String):Flag;
  1416. FUNC Menu(x,y,width:Number; Title:String;<N> {option:String;}
  1417.           Menu_Flags:Number):Number;
  1418. FUNC RdKey():Number;
  1419. PROC Read(VAR s:String [; NoEcho]);
  1420. PROC SetHelp(help_msg:String);
  1421. PROC UseWindow(win_handle:Number);
  1422. FUNC WhereX():Number;
  1423. FUNC WhereY():Number;
  1424. FUNC Window(x,y,width,height:Number; title:String;
  1425.             colour:Number):Number;
  1426. PROC Write(item {,item} : String_or_Number);
  1427.  
  1428.  
  1429. FILE AND DIRECTORY COMMANDS.
  1430.  
  1431. PROC Chain(script_name:String);
  1432. FUNC ChDir(dir_name:String):Flag;
  1433. FUNC CopyFile(source_file,dest_file:String):Flag;
  1434. FUNC CurrentDir():String;
  1435. FUNC DiskSpace():Number;
  1436. FUNC Dos(cmd:String; WAIT or NOWAIT [+NOCLEAR] ):Number;
  1437. FUNC Download(protocol [,filename:String [,default-action] ] ):Flag;
  1438. PROC Edit(filename:String);
  1439. FUNC FAppend(VAR f:File; filename:String):Number;
  1440. FUNC FClose(VAR f:File):Number;
  1441. FUNC FCreate(VAR f:File; filename:String):Number;
  1442. FUNC FDelete(filename:String):Number;
  1443. FUNC FEOF(f:File):Flag;
  1444. FUNC FetchStr(Key:String; VAR s1,s2:String; [ filename:String ] ):Flag;
  1445. FUNC FFirst(wildcard:String; s_attr:Number;
  1446.             VAR Filename:String; VAR f_attr:Number):Flag;
  1447. FUNC FNext(VAR Filename:String;  VAR f_attr:Number):Flag;
  1448. FUNC FOpen(VAR f:File; filename:String):Number;
  1449. FUNC FQualify(filename:String):String;
  1450. FUNC FRead(f:File; VAR s:String):Number;
  1451. FUNC FRename(oldname,newname:String):Flag;
  1452. FUNC FWrite(f:File; s1 {,sn} :String_or_Number):Number;
  1453. FUNC IsFile(filespec:String):Flag;
  1454. FUNC LastTransferredFile():String;
  1455. FUNC MkDir(dir_name:string):Flag;
  1456. FUNC PickFile(wildcard:string; VAR filename:String):Flag;
  1457. PROC Shell();
  1458. FUNC Upload(protocol; filespec:String):Flag;
  1459.  
  1460. DIALLING COMMANDS
  1461.  
  1462. FUNC Dial(key:String):Flag;
  1463. FUNC DialQueued():Number;
  1464. FUNC DialTagged():Number;
  1465. FUNC TagDirEntries(Key:String; ClearOldTags:Flag):Number;
  1466.  
  1467. MODE CONTROL COMMANDS
  1468.  
  1469. PROC CanEscape(enable:Flag);
  1470. FUNC CRinTranslation(CR or CRLF):Number;
  1471. FUNC CrOutTranslation(CR or CRLF):Number;
  1472. FUNC Emulate(emulation:String):Flag;
  1473. FUNC EventLogging(enable:Flag):Flag;
  1474. FUNC LocalEcho(enable:Flag):Flag;
  1475. FUNC LogFile(Log_command; [ filename:string] ):Flag;
  1476. PROC PrinterOff();
  1477. PROC PrinterOn();
  1478. PROC RestoreDefaults();
  1479. PROC SetASCII(CharDelay,LineDelay:Number; BlankExpansion:Flag);
  1480. PROC SetAutoWrap(on:Flag);
  1481. PROC SetBackspace(Key:Number; Destructive:Flag);
  1482. PROC SetCISB(AutoInvoke,IntResponse,SAok,EscapeCtl:Flag);
  1483. PROC SetDialDelay(Secs:Number);
  1484. FUNC SetDiallingDir(Filename:String):Flag;
  1485. PROC SetDialPrefix(PrefixS:String);
  1486. PROC SetDialTimeout(Secs:Number);
  1487. PROC SetDownloadDir(dirname:String);
  1488. PROC SetRawLogging(on:Flag);
  1489. PROC SetMaxRedials(max:Number);
  1490. PROC SetScreenMode(MenuLine,StatusLine,BigScreen:Flag);
  1491. PROC SetSoundEffects(Windows,Bells,FTransfer:Flag);
  1492. PROC SetStripParity(on:Flag);
  1493. PROC SetZmodem(AutoDownload,FullStreaming,EscCtrls:Flag);
  1494.  
  1495. HOST MODE COMMANDS
  1496.  
  1497. PROC HostShell();
  1498. PROC GetHostInfo(VAR NormPass,PrivPass,Welcome,HostDir:String;
  1499.                  VAR MNPwanted:Flag);
  1500. PROC FileSize(f:File; VAR Bytes,Xblocks:String);
  1501. FUNC WaitForCall():Number;
  1502.  
  1503. WATCH AND WAIT COMMANDS.
  1504.  
  1505. PROC ClrAllWatches();
  1506. PROC ClrWatch(handle:Number);
  1507. FUNC GrabWhen(Target:String; VAR line:String):Number;
  1508. FUNC ReadScreen(x,y,len:Number):String;
  1509. FUNC Received(handle:Number):Flag;
  1510. FUNC WaitFor(target:String [; t_secs:Number ] ):Flag;
  1511. FUNC WaitForSilence(secs,max_wait_secs:Number):Flag;
  1512. PROC WatchAgain(handle:Number);
  1513. FUNC WatchEvent(handle1, {,handleN} : Number;
  1514.                 [ timeout:Number ] ):Number;
  1515. FUNC WatchFor(target:String):Number;
  1516. FUNC When(s1:String; s2:String):Number;
  1517.  
  1518.  
  1519. DLL COMMANDS.
  1520.  
  1521. FUNC LoadDLL(DLLname:String):Number;
  1522. FUNC SendMessage(dll_handle:Number;
  1523.                  Command:String;
  1524.                  VAR str_arg:String;
  1525.                  num_arg:Number):Number;
  1526. FUNC UnloadDLL(dll_handle:Number):Number;
  1527.  
  1528. MISCELLANEOUS COMMANDS
  1529.  
  1530. FUNC ASC(s:String; i:Number):Number;
  1531. FUNC CHR(n:Number):String;
  1532. FUNC Date():String;
  1533. PROC DEC(VAR n:Number [; amount:Number ] );
  1534. PROC Delay(secs:Number);
  1535. FUNC DTESpeed():Number;
  1536. PROC Exit();
  1537. FUNC GetCallInfo(VAR ServiceName:String;
  1538.                  VAR Connect_Speed:Number;
  1539.                  VAR Key:String):Flag;
  1540. PROC GetEnv(varname:String; VAR value:String):Flag;
  1541. PROC Halt();
  1542. PROC HaltE(return_code:Number);
  1543. PROC INC(VAR n:Number [; amount:Number ] );
  1544. PROC IntToStr(n:Number; VAR s:String);
  1545. FUNC IsDirKey(Key:String):Flag;
  1546. FUNC Length(s:String):Number;
  1547. PROC LogEvent(s:String);
  1548. FUNC OdyVersion():String;
  1549. FUNC Pos(substring,s:String):Number;
  1550. PROC Priority(enable:Flag);
  1551. PROC SetTimer(seconds:Number);
  1552. PROC SilentMode(enable:Flag);
  1553. FUNC StrEdit(VAR s:String [, NoEcho]):Flag;
  1554. PROC StrToInt(s:String; VAR n:Number);
  1555. FUNC SubStr(s:String; start,length:Number):String;
  1556. FUNC Time():String;
  1557. FUNC TimerExpired():Flag;
  1558. FUNC ToLower(s:String):String;
  1559. FUNC ToUpper(s:String):String;
  1560.  
  1561. -----------------------------------------------------------------------------
  1562.  
  1563. REGISTRATION
  1564.  
  1565. You can register, and receive the full version of Odyssey by sending £69.00
  1566. + £4 carriage + VAT (total £85.78) to Shareware Publishing at the address
  1567. below. Shareware Publishing also accept credit card payments on (0297)
  1568. 24088.
  1569.  
  1570. Registration of your Odyssey Package gets you (apart from salving your
  1571. guilty concience)! :-
  1572.  
  1573.    o The LATEST version of the software, plus notice of updates.
  1574.    o A comprehensive, professionally bound and typeset 400+ page manual.
  1575.    o Free voice-line technical support.
  1576.    o Online support in the UK on CIX and Compuserve.
  1577.    o The Odyssey FAX module (supports EIA class I/II FAX modems).
  1578.    o The Odyssey REMOTE CONTROL module (>5000 cps file transfers!).
  1579.    o Other valuable utilities such as the script compiler, editor
  1580.      configuration utility, plus script file examples for several popular
  1581.      systems.
  1582.  
  1583. And more! Visit your local dealer or call SHAREWARE PUBLISHING on (0297)
  1584. 24088 and get your registered copy of ODYSSEY sent to you today!
  1585.  
  1586. Shareware Publishing
  1587. The Shareware Village
  1588. Station Road
  1589. Colyton, Devon.
  1590. England.
  1591.  
  1592. Call: 0297-24088.
  1593.